﻿using System;
using System.Collections.Generic;
using System.Linq;
using Controller2.BLL;

namespace Controller2.Models.ViewModels
{
    public class CampanhaViewModel
    {
        public int ID { get; set; }
        public string Cliente { get; set; }
        public string Nome { get; set; }
        public string DataInicio { get; set; }
        public string DataFim { get; set; }

        public IEnumerable<CampanhaViewModel> Listar(ControllerBDModelContainer db, string texto, int filtro, string usuario = "")
        {
            IEnumerable<CampanhaViewModel> camp;
            int codigo = 0;
            if (filtro == 1)
            {
                if (!Int32.TryParse(texto, out codigo))
                {
                    filtro = 0;
                    texto = "";
                }
            }
            if (string.IsNullOrWhiteSpace(texto) || texto.Equals("Digite sua pesquisa"))
            {
                filtro = 0;
                texto = "";
            }
            switch (filtro)
            {
                default:
                    if (string.IsNullOrWhiteSpace(usuario))
                    {
                        camp = from c in CampanhaBll.GetAllCampanhas(db)
                               orderby c.IdCampanha
                               select new CampanhaViewModel
                               {
                                   ID = c.IdCampanha,
                                   Cliente = c.Cliente.NomePessoa,
                                   Nome = c.Nome,
                                   DataInicio = c.DataInicio.ToShortDateString(),
                                   DataFim = c.DataFim.ToShortDateString()
                               };
                    }
                    else
                    {
                        camp = from c in CampanhaBll.GetAllCampanhas(db)
                               orderby c.IdCampanha
                               where c.Cliente.UserName.Equals(usuario)
                               select new CampanhaViewModel
                               {
                                   ID = c.IdCampanha,
                                   Cliente = c.Cliente.NomePessoa,
                                   Nome = c.Nome,
                                   DataInicio = c.DataInicio.ToShortDateString(),
                                   DataFim = c.DataFim.ToShortDateString()
                               };
                    }
                    break;
                case 1:
                    if (string.IsNullOrWhiteSpace(usuario))
                    {
                        camp = from c in CampanhaBll.GetAllCampanhas(db)
                               orderby c.IdCampanha
                               where c.IdCampanha == codigo
                               select new CampanhaViewModel
                               {
                                   ID = c.IdCampanha,
                                   Cliente = c.Cliente.NomePessoa,
                                   Nome = c.Nome,
                                   DataInicio = c.DataInicio.ToShortDateString(),
                                   DataFim = c.DataFim.ToShortDateString()
                               };
                    }
                    else
                    {
                        camp = from c in CampanhaBll.GetAllCampanhas(db)
                               orderby c.IdCampanha
                               where c.IdCampanha == codigo && c.Cliente.UserName.Equals(usuario)
                               select new CampanhaViewModel
                               {
                                   ID = c.IdCampanha,
                                   Cliente = c.Cliente.NomePessoa,
                                   Nome = c.Nome,
                                   DataInicio = c.DataInicio.ToShortDateString(),
                                   DataFim = c.DataFim.ToShortDateString()
                               };
                    }
                    break;
            }

			return camp.OrderBy(o => o.ID);
        }
    }
}